package com.shengqin.service;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.shengqin.common.pojo.CommonPage;
import com.shengqin.entity.PlanApplyProject;
import com.shengqin.listeners.model.ArrangeImportModel;
import com.shengqin.pojo.exam.ArrangeParam;
import com.shengqin.pojo.exam.CheckInParam;
import com.shengqin.pojo.exam.PlanApplyQueryParam;
import com.shengqin.pojo.exam.PublicityQueryParam;

import java.util.Collection;
import java.util.List;
import java.util.Map;

public interface IPlanApplyProjectService extends IService<PlanApplyProject> {
    Page<PlanApplyProject> queryPage(CommonPage<PlanApplyQueryParam> pageQueryParam);

    void batchSaveData(List<PlanApplyProject> cachedDataList, Integer planId);
    
    List<PlanApplyProject> queryByPlanIdAndStudyCodes(Integer planId, Collection<String> studyCodes);

    Boolean arrange(ArrangeParam arrangeParam);

    Page<PlanApplyProject> queryArrangePage(CommonPage<PlanApplyQueryParam> pageQueryParam);

    List<PlanApplyProject> checkIn(CheckInParam checkInParam);

    Map<String,Long> queryCheckInCount(CheckInParam checkInParam);

    Boolean cancelCheck(CheckInParam checkInParam);

    List<PlanApplyProject> queryCheckInGroup(CheckInParam checkInParam);

    List<PlanApplyProject> checkInGroup(CheckInParam checkInParam);

    List<PlanApplyProject> cancelCheckGroup(CheckInParam checkInParam);

    Page<PlanApplyProject> queryTestProjectResult(CommonPage<PublicityQueryParam> queryPageParam);

    List<PlanApplyProject> exportArrangePage(CommonPage<PlanApplyQueryParam> pageQueryParam);

    List<PlanApplyProject> queryTestProjectResultList(CommonPage<PublicityQueryParam> queryPageParam);

    Boolean clearApply(PlanApplyQueryParam queryParam);

    Boolean lockResult(PublicityQueryParam publicityQueryParam);

    void importArrange(List<ArrangeImportModel> cachedDataList, Integer planId);

    Boolean updateProjectNames(PlanApplyProject planApplyProject);

    void updateStudentInfo(Integer planId);

    List<PlanApplyProject> listByPlanId(Integer planId);

    PlanApplyProject queryByPlanIdAndStudyCode(Integer planId, String studyCode);
}
